from Crypto.Util.number import *
from random import *
import libnum
import uuid
import os
import gmpy2

flag = "flag{" + str(uuid.uuid4()) + "}"
flag = libnum.s2n(flag.encode()+os.urandom(30))


print(gmpy2.bit_length(flag))
BITS = 256
p = getPrime(BITS)
q = getPrime(BITS)
r = getPrime(BITS)
n = p*q*r

g = randint(1,n)
a1 = randint(1,n)
a2 = randint(1,n)
a3 = randint(1,n)

k1 = pow(g,a1*(p-1),n)
k2 = pow(g,a2*(q-1),n)
k3 = pow(g,a3*(r-1),n)

b1 = randint(1,n)
b2 = randint(1,n)
b3 = randint(1,n)

c1 = (pow(k1,b1,n)*flag)%n
c2 = (pow(k2,b2,n)*flag)%n
c3 = (pow(k3,b3,n)*flag)%n

print("n=",n)
print("k1=",k1)
print("k2=",k2)
print("k3=",k3)
print("c1=",c1)
print("c2=",c2)
print("c3=",c3)

n= 678813254917681705328774143124132144172308115391202920251510710713360896243757781691501454641619413498501310405708893923685565573523057496134969586760869477751107352471731423969919639316646127164510274116670962488154389904874411121
k1= 381749459832416347768762629969179533762768521390109159282389433524068584034416382312381675833183471459108505848251040782699024489523797800081229480147217059720233575124956774980255602711558599303570143370625206530484890142201751823
k2= 165458831551572222680033027493028494144730174200775287555980640706816242477476237198916762508497160084527769022117140765787081923782014103103435412189561923115744673535908861271203166852638364198196384429816917233078100285494178745
k3= 314203854713768996803978913106625397378210829443607374814423039616372382195312652417515677658490409928231193726201303275851252904606130664518451747305132236421544681740722084696138089437269459167076302389279870139717457587635677392
c1= 228268777445106007136338846227267168066223400666292593214299282499180742682122514284977597221466960246546107862037149935725879768922421257114235652908730951767590818630300458463448716606771909956089112704444099248390755330710354862
c2= 670542373912748205311905314073591274261853579075366950458202265831785523337632459776614082796555212641369759049941306561601285507241992585827209451602098065694642323397918543251651426315381154471455132032705424636870144515388947543
c3= 546494008620110408565169402272350507885286360587774532551550133912504510952416268804649127330436460429828063293458279093668585092193183352187052513730010558022726528940536162302295597344136767256287148671986805737651663643221433709


